Return any binary tree that matches the given preorder and postorder traversals.
Values in the traversals pre
and post
are distinct positive integers.
Input: pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1] Output: [1,2,3,4,5,6,7]
1 <= pre.length == post.length <= 30
pre[]
andpost[]
are both permutations of1, 2, ..., pre.length
.- It is guaranteed an answer exists. If there exists multiple answers, you can return any of them.
# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclassSolution: defconstructFromPrePost(self, pre: List[int], post: List[int]) ->TreeNode: ifnotpre: returnNoneeliflen(pre) ==1: returnTreeNode(pre[0]) i=post.index(pre[1]) returnTreeNode( pre[0], self.constructFromPrePost(pre[1:i+2], post[:i+1]), self.constructFromPrePost(pre[i+2:], post[i+1:-1]) )